forwardRef() is a patch, not a fix. Circular dependencies are a design smell signaling that two services know too much about each other. The proper solutions are: extract shared logic into a third service, use events to decouple communication, merge the two services, or redesign responsibilities to eliminate the bidirectional dependency.
Extract shared logic — move mutually needed code into a third independent service that both can import without creating a cycle.
Use events — have one service emit an event via NestJS EventEmitter or a message bus that the other listens to, removing the direct reference.
Merge services — if two services always need each other, they may belong together as a single cohesive service.
Redesign responsibilities — ask why A needs B and B needs A. Usually one direction is accidental and can be inverted or removed.